// 导入conn使用
const conn=require("../db/db.js")
// 使用coment
const moment=require("moment")
// 显示注册页面
const bcryptjs=require("bcryptjs")
let mici=10
const showRegister=(req,res)=>{
    res.render("./user/register.ejs",{})
}
// 显示登陆页面
const showLogin=(req,res)=>{
    res.render("./user/login.ejs",{})
}
// 显示info页面
const showInfo=(req,res)=>{
    res.render("./user/info.ejs",{})
}
// 实现注册post功能
const register=(req,res)=>{
    let blogUser=req.body;
    // 2,判断用户名是否重复
    let sql1="select count(*) as count from blog_users where username=?"
    conn.query(sql1,blogUser.username,(err,result)=>{
        console.log(result);
        if(err) return res.send({status:500,msg:"查询重复失败了"})
        if(result[0].count==1) return res.send({status:501,msg:"用户名已经重复了"})
        // 名字可以用 添加到数据库
        blogUser.ctime=moment().format("YYYY-MM-DD HH:mm:ss");//加上ctime 时间
        //bycriptjs.hash(输入密码，幂次，函数)
        //在添加之前 把密码加密
        bcryptjs.hash(blogUser.password,mici,(err,pwd)=>{
            if(err) return res.send({status:503,msg:"加密失败"})
            blogUser.password=pwd;//把加密的字符串 重新赋值给pasword
        
        let sql2="insert into blog_users set ?"
        conn.query(sql2,blogUser,(err,result)=>{
            if(err) return res.send({status:502,msg:"添加失败"+err.message})
            res.send({status:200,msg:"注册成功"})
        })
    })
    })
}
// 实现登陆post功能
const login=(req,res)=>{
    let user=req.body;//{username:'1s',password:'123'}
    console.log(user);
    // 1 判断是否填写 trim() 去除空格2 去数据库查询是否登录
    if(user.username.trim()==''||user.password.trim()==''){
        return res.send({status:500,msg:"你填写的用户名或者密码为空"})
    }
    // 不为空 就去数据库登录
    let sql1="select * from blog_users where username=? "
    conn.query(sql1,[user.username,user.password],(err,result)=>{
        if(err ) return res.send({status:501,msg:"查询登录失败"})
        // console.log(result); 查到是数组 有一条 查不到 空数组[]
        if(result.length==0) return res.send({status:502,msg:'用户名密码不存在'})
        //查完还要比 密码 解密比较
        bcryptjs.compare(user.password,result[0].password,(err,jieguo)=>{
            //jieguo 正确是true
        if(!jieguo) return res.send({status:502,msg:"密码错误"})
        // 成功
        // 顺便存上，登录人的信息user和islogin req.session.名字=值
        req.session.user=result[0];//对象 里面有用户名和昵称这些
        req.session.islogin=true;

        res.send({status:200 ,msg:"登录成功"})
        
    })
})

}


// 注销
const logout=(req,res)=>{
    // 删除session重新跳转到首页
    req.session.destroy(function(){
        // res.redirect 重新跳转
        res.redirect("/")
    })
}
module.exports={
    showRegister,
    showLogin,
    register,
    login,
    showInfo,
    logout

}